// components/test1/test1.js
Component({
  options: {
    // 隔离，互不影响。默认值
    styleIsolation: "isolated",
    // 父可以影响子，子不能影响父
    // styleIsolation: "apply-shared"
    // 双向影响
    // styleIsolation: "shared"
    pureDataPattern: /^_/
  },
  properties: {
    // max: Number,
    max: {
      type: Number,
      value: 10
    }
  },
  data: {
    count: 0,
    _rgb: {
      r: 0,
      g: 30,
      b: 0
    },
    n1: 0,
    n2: 0,
    sum: 0,
    fullColor: '0,30,0'
  },
  observers: {
    // 分开写
    // n1(newN1) {
    //   this.setData({
    //     sum: newN1 + this.data.n2
    //   })
    // }
    // 一起写
    'n1,n2': function (newN1, newN2) {
      this.setData({
        sum: newN1 + newN2
      })
    },
    'rgb.r': function (r) {
      this.setData({
        fullColor: `${r},${this.data.rgb.g},${this.data.rgb.b}`
      })
    }
  },
  methods: {
    addN1() {
      this.setData({
        n1: this.data.n1 + 1
      })
    },
    addN2() {
      this.setData({
        n2: this.data.n2 + 1
      })
    },
    showInfo() {
      console.log(this.data);
      console.log(this.properties);
      console.log(this.data === this.properties);
      console.log(this.data.max);
      console.log(this.properties.count);
    },
    changeR() {
      this.setData({
        // rgb: { ...this.data.rgb, r: 50 }
        'rgb.r': this.data.rgb.r + 10
      })
    },
    addCount() {
      this.setData({
        count: this.data.count + 1
      })
      this._showCount()
    },
    // 约定：建议自定义方法以_开头用来和点击事件区分开
    _showCount() {
      wx.showToast({
        title: 'count是' + this.data.count,
      })
    }
  },
  lifetimes: {
    created() {
      console.log('created');
      // 组件实例刚被创建的时候，此时不能修改data中的数据
      // 错误示范：
      // this.setData({
      //   count: 10
      // })
    },
    // 在组件实例进入页面节点树时执行
    attached() {
      console.log('attached');
      // 在此阶段可以修改data里面的数据，还可以请求接口
      this.setData({
        count: 10
      })
    },
    //在组件在视图层布局完成后执行
    ready() {
      console.log('ready');
    },
    //在组件实例被从页面节点树移除时执行
    detached() {
      console.log('detached');
    }
  }
})
